/* File: Organism.java
 * Purpose: Represents an organism in the environment that can move, attack, dance, eat and mate.
 * Author: Team Karp
 * Date: 12/13/07
 * Revisions: 12/13/07 - Adam Patterson - Initial Version
 *            12/20/07 - Adam Patterson - Began Implementing
 * Additional Requirements: 
 */
package protovitae.data;

import org.w3c.dom.Document;
import org.w3c.dom.Element;


/**
 * @version 1.0
 * @created 06-Dec-2007 16:19:10
 */
public interface Organism extends XMLSavable {
        public enum ATTRIBUTE_TYPE {ACTION,AGE,ATTRACTION,BRAWN,CAUTION,FORTITUDE,HEALTH};
        public enum ACTION_TYPE{MOVE,ATTACK,DANCE,EAT,MATE,ACT};
        
	/**
	 *  
	 * @param parent
	 */
	public void save(Element parentElm, Document doc);

	/**
	 * 
	 * @param organism
	 */
	public void attack(Organism organism);

	/**
	 * 
	 * @param organism
	 */
	public void dance(Simulation parent, Organism organism);

	/**
	 * 
	 * @param food
	 */
	public void eat(Organism food);

	/**
	 * 
	 * @param organism
	 */
	public void mate(Organism organism);

	/**
	 * 
	 * @param parent
	 */
	public Position move(Simulation parent, ConcreteOrganism organism);
        
        public String getGeneticInformation();
}